package com.rise.remi.player;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import com.rise.remi.core.Global;
import com.rise.remi.items.Item;
import com.rise.remi.world.World;
import java.util.ArrayList;

/**
 *
 * @author remi
 */
public class Entity {

    protected ArrayList<Item> inventory = new ArrayList<>();
    protected int hp, verticalSpeed, horizontalSpeed, defence, attack;
    protected String name;
    //координаты измеряются в тайлах
    private int x, y;
    protected BufferedImage sprite;
    protected boolean isPaint = false;
    protected int invSize = 20;

    public boolean isPaint() {
        return isPaint;
    }

    public void setPaint(boolean isPaint) {
        this.isPaint = isPaint;
    }

    //отрисовка героя и его друга, isPaint - рисовать ли (не рисуем, пока друг не подключился к игре)    
    //координаты друга транслируем в соответствии с положением карты (абсолютная коорд друга + абсолютная коорд мира)
    //герой, за которого мы играем, всегда в центре экрана
    public void paint(Graphics g, World world, boolean isFriend) {
        int xo, yo;
        if (!isFriend) {
            xo = Global.paintWidth / 2 * Global.tileWidth;
            yo = Global.paintHeight / 2 * Global.tileHeight;
        } else {
            xo = Global.translateX(x) * Global.tileWidth;
            yo = Global.translateY(y) * Global.tileHeight;
        }

        if (isPaint) {
            g.drawImage(sprite.getScaledInstance(Global.tileWidth, Global.tileHeight, 0), xo, yo, null);
            g.setColor(Color.WHITE);
            g.drawString(name, xo, yo - 8);
        }
    }

    public void moveDown() {
        y += 1;
    }

    public void moveUp() {
        y -= 1;
    }

    public void moveLeft() {
        x -= 1;
    }

    public void moveRight() {
        x += 1;
    }

    public BufferedImage getSprite() {
        return sprite;
    }

    public void setSprite(BufferedImage sprite) {
        this.sprite = sprite;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAttack() {
        return attack;
    }

    public void setAttack(int attack) {
        this.attack = attack;
    }

    public int getDefence() {
        return defence;
    }

    public void setDefence(int defence) {
        this.defence = defence;
    }

    public ArrayList<Item> getInventory() {
        return inventory;
    }

    public int getHp() {
        return hp;
    }

    public int getInventorySize() {
        return invSize;
    }

    public void setHp(int hp) {
        this.hp = hp;
    }
}
